package com.example.dictionary.config;

import com.mybatisflex.spring.boot.MyBatisFlexCustomizer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;
import java.io.File;

/**
 * 数据库配置
 * 使用MyBatis-Flex替代JPA
 */
@Configuration
public class DatabaseConfig {
    
    @Value("${spring.datasource.url}")
    private String dataSourceUrl;
    
    /**
     * 创建 SQLite 数据源
     * 由于 Spring Boot 的 DataSourceBuilder 不支持 SQLite，
     * 需要直接使用 SQLite JDBC Driver 创建数据源
     */
    @Bean
    @Primary
    public DataSource dataSource() {
        // 确保数据库目录存在
        String dbPath = dataSourceUrl.replace("jdbc:sqlite:", "");
        File dbFile = new File(dbPath);
        File dbDir = dbFile.getParentFile();
        if (dbDir != null && !dbDir.exists()) {
            dbDir.mkdirs();
        }
        
        // 创建 SQLite 数据源
        org.sqlite.SQLiteDataSource dataSource = new org.sqlite.SQLiteDataSource();
        dataSource.setUrl(dataSourceUrl);
        return dataSource;
    }
    
    /**
     * MyBatis-Flex自定义配置
     */
    @Bean
    public MyBatisFlexCustomizer myBatisFlexCustomizer() {
        return globalConfig -> {
            // MyBatis-Flex的配置方式
            globalConfig.setPrintBanner(false);
            // 其他配置可以通过application.yml设置
        };
    }
}
